Problem
【CQOI2011】动态逆序对
Description
对于序列,它的逆序对数定义为满足,且的数对的个数。
给到的一个排列,按照某种顺序依次删除个元素,你的任务是在每次删除一个元素之前统计整个序列的逆序对数。
Input
输入第一行包含两个整数和,即初始元素的个数和删除的元素个数。
以下行每行包含一个到之间的正整数,即初始排列。
以下行每行一个正整数,依次为每次删除的元素。
Output
Sample Input
1 | 5 4 |
Sample Output
1 | 5 |
HINT
标签:CDQ分治
树状数组
三维偏序
Solution
三维偏序,可上分治。
首先将删除操作离线,倒着做变成插入,并给每个数编号分别表示其下标、数值、插入时间。需要计算每个元素插入后会多出多少个逆序对,即对于三元组,有多少个满足或。
两个三维偏序,做两次分治后统计即可。
Code
1 |
|